package com.orm.mybatis.utils;

import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Slf4j
public class GroupSeparation {


    public static List<List<File>> getListByGroup(List<File> list,String regex) {
        List<List<File>> result = new ArrayList<List<File>>();
//        Map<String, List<File>> map = new TreeMap<String, List<File>>();  排序专用
        Map<String, List<File>> map = new HashMap<>();
        String name;
        for (File file : list) {
            Pattern p=Pattern.compile(regex);
            Matcher m=p.matcher(file.getName());
            if (m.find()){
                name = m.group();
                if (map.containsKey(name)) {
                    List<File> t = map.get(name);
                    t.add(file);
                    map.put(name, t);
                } else {
                    List<File> t = new ArrayList<File>();
                    t.add(file);
                    map.put(name, t);
                }
            }else {
                log.warn("分数组异常");
            }
        }
        for (Map.Entry<String, List<File>> entry : map.entrySet()) {
            result.add(entry.getValue());
        }
        return result;
    }

    public static Map<String,List<File>> getMapByGroup(List<File> list,String regex) {
//        List<List<File>> result = new ArrayList<List<File>>();
//        Map<String, List<File>> map = new TreeMap<String, List<File>>();  排序专用
        Map<String, List<File>> map = new HashMap<String, List<File>>();
        String name;
        for (File file : list) {
            Pattern p=Pattern.compile(regex);
            Matcher m=p.matcher(file.getName());
            if (m.find()){
                name = m.group();
                if (map.containsKey(name)) {
                    List<File> t = map.get(name);
                    t.add(file);

                    map.put(name, t);
                } else {
                    List<File> t = new ArrayList<File>();
                    t.add(file);
                    map.put(name, t);
                }
            }else {
                log.warn("分数组异常");
            }
        }
//        for (Map.Entry<String, List<File>> entry : map.entrySet()) {
//            result.add(entry.getValue());
//        }
        return map;
    }
}
